1. Technical Field
The present invention relates to storage management. More specifically, it relates to assigning logic storage entities of a storage device to multiple partitions of a computer system, so that the partitions only access the logic storage entities that they are allowed to access, and can share resources when accessing the logic storage entities.
2. Background Information
Large computer systems are usually partitioned into a number of logical partitions. Each logical partition represents a division of resources in the system, and operates as an independent logical system. An example of logical partitions is the partitioning of a multiprocessor computer system into multiple independent servers, each with it own processors, main storage, and I/O devices.
A typical resource that each logical partition requires is disk storage. Many systems utilize devices supporting the Small Computer System Interface (SCSI) standards, which define commands, protocols, and electrical and optical interfaces for storage devices. Most storage devices use the SCSI Upper Level Protocol (ULP) to control the devices.
The relationship between SCSI devices is encapsulated by a client-server service-delivery model. The client is called an SCSI initiator and the server is called an SCSI target. An SCSI domain consists of a least one SCSI device, at least one SCSI target and at least one SCSI initiator interconnected by a service delivery subsystem. An SCSI target consists of one or more SCSI logical storage entities, e.g. logic units each with a logic unit number (LUN). For partitions accessing storage devices, a partition is an SCSI initiator, and a storage device is an SCSI target. A storage device (or target) may contain a single LUN, for example, when a small hard disk is used as the storage device. Or, a storage device may contain multiple LUNs, for instance, when the storage device includes external RAID boxes. Each partition must have accesses to all LUNs assigned to that partition, but should not access any LUN that is not assigned to that partition.
A Multiple LUN (Multi-LUN) SCSI target is a target that contains multiple LUNs. A large computer system may contain one or more Multi-LUN SCSI targets, and different LUNs of each multiple LUN SCSI target may be assigned to different partitions. When the SCSI ULP allows an initiator (i.e. a partition) to send commands to a target, all the LUNs contained within the target will be exposed to the initiator. Hence, one partition may see LUNs assigned to other partitions.
To prevent one partition from accessing LUNs assigned to other partitions, all LUNs contained in a target can be assigned to a single partition. However, large storage devices, such as an external RAID storage box, could not be shared between multiple partitions, thus resulting in a waste of resources. Alternatively, a proxy server partition (e.g. a virtual I/O server) can be used to help communicate between partitions and LUNs. The proxy server partition would own all of the LUNs and server portions of those LUNs to other partitions. However, since commands and data would have to be routed through a third party partition (i.e. the proxy server partition), there would be a significant amount of additional processing overhead and data transfer overhead.